assert(0x0 == 0)
assert(0x1 == 1)
assert(0xf == 15)
assert(0x0F == 15)
assert(0x00F == 15)
assert(0x000F == 15)
assert(0x0000F == 15)
assert(0x00000F == 15)
assert(0x000000F == 15)
assert(0x0000000F == 15)
assert(0x00000000F == 15)
assert(0x000000000F == 15)
assert(0x0000000000F == 15)
assert(0x00000000000F == 15)
assert(0x000000000000F == 15)
assert(0x0000000000000F == 15)
assert(0x00000000000000F == 15)
assert(0x000000000000000F == 15)
assert(0x00000_0000000_000F == 15)
assert(0x_____________________________________________________________________________________________________________________F == 15)
assert(0xf0123456789aBcDE == -1147797409030816546)
assert(99999999999999999 + 1234567890 == 100000001234567889)
assert('A' == 65)
assert('\t' == 9)
assert(' ' == 32)
assert("\U12"[0] == 0x12)
assert("\U7F"[0] == 0x7F)
assert(~0 == -1)
assert(~1 == -2)
assert(0xFFFFFFFFFFFFFFFE == -2)
assert(0x8000000000000000 == -9223372036854775807 - 1)
assert(100 + 10 + 1 == 111)
assert(111 - 10 - 1 == 100)
assert(100 * 10 * 1 == 1000)
assert(100 / 10 / 1 == 10)
assert(101 % 10 % 1 == 0)

local a100 = 100
local a10 = 10
let a1 = a10 / 10
local a111 = a100 + a1 + a10
local a101 = a100 + a1

assert(a100 + a10 + a1 == 111)
assert(a111 - a10 - a1 == a100)
assert(a100 * a10 * a1 == 1000)
assert(a100 / a10 / a1 == a10)
assert(a101 % a10 % a1 == 0)

assert((100 << 10 << 1) == 100 * 1024 * 2)
assert((100 >> 1) == 50)
assert((0x8000000000000000 >>> 63) == 1)
assert(0x0000000000000000.tostring() == "0")
assert(0x8000000000000000.tostring() == "-9223372036854775808")
assert(0x7FFFFFFFFFFFFFFF.tostring() == "9223372036854775807")
assert(0x8000000000000000 == "-9223372036854775808".tointeger())
assert(0x7FFFFFFFFFFFFFFF == "9223372036854775807".tointeger())
assert((true).tointeger() == 1)
assert((false).tointeger() == 0)
assert(!!0x8000000000000000 == true)
assert(!!0x0000000000000000 == false)
assert(0x8000000000000000 + 0x8000000000000001 == 1)

assert([11 12 13][2] == 13)
assert([11,12,-13][2] == -13)
assert([11,12 13][2] == 13)
assert([11,12 13,][2] == 13)
assert([11 12 - 13][1] == -1)

local a = 1
assert((a *= -10) == -10)
assert((a *= -10) == 100)
assert((a *= -10) == -1000)
assert((a *= -10) == 10000)
assert((a *= -10) == -100000)
assert((a *= -10) == 1000000)
assert((a *= -10) == -10000000)
assert((a *= -10) == 100000000)
assert((a *= -10) == -1000000000)
assert((a *= -10) == 10000000000)
assert((a *= -10) == -100000000000)
